package io.io2;

import java.io.*;

/**
 * 缓冲流：是一对高级流，作用是加快读写效率
 *1) BufferedInputStream:缓冲输入流
 *2) BufferedOutputStream“缓冲输出流
 * 缓冲流读写效率块的原因：
 * 1)缓冲流内部有一个8KB的字节数组
 *    你看着是一个字节一个字节的读写，但缓冲流底层已经把它换为块来读取了
 * 缓冲流何时用的意义：
 * 1)不同的高经流有不同的功能，但只有缓冲亏才具有加速功能（块读写）
 *    其他的高经流不具备加速功能，都是单字节读写
 *    此时若想完成功能在加速处理，则需要流连接，将功能流链接到缓冲流上
 */
public class CopyDemo4Buffered {
    public static void main(String[] args) throws IOException {
        FileInputStream fis=new FileInputStream("blr.jpg");
        BufferedInputStream bis=new BufferedInputStream(fis);
        FileOutputStream fos=new FileOutputStream("blr_01.jpg");
        BufferedOutputStream bos=new BufferedOutputStream(fos);
        long start=System.currentTimeMillis();
        int len;
        while ((len=bis.read())!=-1){//使用高级流来读取字节
            bos.write(len);
        }
        long end=System.currentTimeMillis();
        System.out.println("复制完毕！"+(end-start)+"ms");
        bis.close();//关闭高级流，就相当于关闭了低级流
        bos.close();
    }
}
